package game.controler.gestionnaires.elementjeu;

import game.impl.objets.fou.fou_oiseau;
import game.impl.objets.fou.fou_cannibale;
import game.model.objets.Fou;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 * @author Gab'z
 */
public class GestionnaireFous {

    private static GestionnaireFous Gfous = null;
    private HashMap<String, Fou> listeFous = new HashMap<String, Fou>();
    private HashMap<String, ArrayList<String>> listesIdPlanFous = new HashMap<String, ArrayList<String>>();

    private GestionnaireFous() {
        System.out.println("Initialisation des fous");
        initialiserFous();
    }

    public static GestionnaireFous getGfous() {
        if (Gfous == null) {
            Gfous = new GestionnaireFous();
        }
        return Gfous;
    }

    public Fou getFou(String ID) {
        return listeFous.get(ID);
    }

    private void initialiserFous() {

        // A répéter pour chaque Fou du jeu

        // PLAN_0
        //ajouterFou(new crazy());

        // PLAN_5
        ajouterFou(new fou_oiseau());
        ajouterFou(new fou_cannibale());
    }

    private void ajouterFou(Fou fou) {
        System.out.println("ajouterFou : " + fou.getId());
        listeFous.put(fou.getId(), fou);
        System.out.println("ajouté dans listeFou");
        ArrayList<String> listeStringFous = listesIdPlanFous.get(fou.getIdPlan());
        System.out.println("liste fous plan " + fou.getIdPlan() + " récupérée");
        if (listeStringFous == null) {
            System.out.println("elle est vide on en crée une vide");
            listeStringFous = new ArrayList<String>(0);
        }
        listeStringFous.add(fou.getId());
        System.out.println("ID du fou ajouté à la sous liste");
        listesIdPlanFous.put(fou.getIdPlan(), listeStringFous);
        System.out.println("sous liste remise dans liste");

    }

    public ArrayList<String> getListeFousPlan(String idPlanCourant) {
        System.out.println("getListeFousPlan id = " + idPlanCourant);
        ArrayList<String> listeFousPlan = listesIdPlanFous.get(idPlanCourant);
        if (listeFousPlan == null) {
            return new ArrayList<String>(0);
        }
        return listeFousPlan;
    }
}